// 主题管理类
class ThemeManager {
    constructor() {
        this.currentTheme = 'auto'; // auto, light, dark
        // 等待DOM加载完成后再初始化
        if (typeof document !== 'undefined' && document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', () => {
                this.init();
            });
        } else if (typeof document !== 'undefined') {
            this.init();
        }
    }
    
    init() {
        this.loadUserPreference();
        this.applyTheme();
        this.listenForSystemChanges();
    }
    
    // 检测系统主题偏好
    getSystemTheme() {
        if (typeof window !== 'undefined') {
            return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
        }
        return 'light';
    }
    
    // 应用主题
    applyTheme() {
        const theme = this.currentTheme === 'auto' ? this.getSystemTheme() : this.currentTheme;
        
        // 设置Vant ConfigProvider的theme属性
        this.setVantTheme(theme);
        
        // 设置自定义CSS变量（仅用于自定义组件）
        this.setCustomTheme(theme);
        
        // 触发主题变化事件，供其他组件监听
        if (typeof window !== 'undefined') {
            window.dispatchEvent(new CustomEvent('themeChanged', { detail: { theme } }));
        }
    }
    
    // 设置Vant主题
    setVantTheme(theme) {
        if (typeof document === 'undefined') return;
        
        // 查找所有ConfigProvider组件并设置theme属性
        const configProviders = document.querySelectorAll('[data-vant-config-provider]');
        configProviders.forEach(provider => {
            provider.setAttribute('theme', theme);
        });
        
        // 如果没有找到ConfigProvider，尝试通过Vue实例设置
        if (configProviders.length === 0 && typeof window !== 'undefined' && window.vueApp) {
            // 这里可以通过Vue实例的全局属性设置
            window.vueApp.config.globalProperties.$vantTheme = theme;
        }
    }
    
    // 设置自定义主题CSS变量
    setCustomTheme(theme) {
        if (typeof document === 'undefined') return;
        
        // 确保document.documentElement存在
        if (document.documentElement) {
            document.documentElement.setAttribute('data-theme', theme);
        }
        
        // 确保document.body存在
        if (document.body) {
            // 只添加自定义主题类，不覆盖Vant的样式
            document.body.className = theme === 'dark' ? 'custom-dark-theme' : 'custom-light-theme';
        }
    }
    
    // 监听系统主题变化
    listenForSystemChanges() {
        if (typeof window === 'undefined') return;
        
        const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
        mediaQuery.addEventListener('change', () => {
            if (this.currentTheme === 'auto') {
                this.applyTheme();
            }
        });
    }
    
    // 保存用户偏好
    saveUserPreference() {
        if (typeof localStorage !== 'undefined') {
            localStorage.setItem('theme_preference', this.currentTheme);
        }
    }
    
    // 加载用户偏好
    loadUserPreference() {
        if (typeof localStorage !== 'undefined') {
            const saved = localStorage.getItem('theme_preference');
            if (saved && ['auto', 'light', 'dark'].includes(saved)) {
                this.currentTheme = saved;
            }
        }
    }
    
    // 切换主题
    setTheme(theme) {
        if (!['auto', 'light', 'dark'].includes(theme)) {
            if (typeof console !== 'undefined') {
                console.warn('Invalid theme:', theme);
            }
            return;
        }
        this.currentTheme = theme;
        this.saveUserPreference();
        this.applyTheme();
    }
    
    // 获取当前主题
    getCurrentTheme() {
        return this.currentTheme === 'auto' ? this.getSystemTheme() : this.currentTheme;
    }
    
    // 获取用户偏好
    getUserPreference() {
        return this.currentTheme;
    }
}

// 创建全局主题管理器实例
let themeManagerInstance;

if (typeof window !== 'undefined') {
    // 延迟创建，确保DOM已加载
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', () => {
            window.themeManager = new ThemeManager();
        });
    } else {
        window.themeManager = new ThemeManager();
    }
    themeManagerInstance = window.themeManager;
}

// 导出供其他模块使用
export default themeManagerInstance;